/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.tpj.database.ip_adresy;

import cz.tpj.util.ErrorDatabase;
import cz.tpj.util.Validation;

/**
 *
 * 
 * Slouží jako přepravka. Třída je koncipována podle databázové tabulky Ip_adresy.
 * @author jabo
 */
public class Ip {
    private String id;
    private String ip;

    public Ip () {
    }

    /**
     * Konstruktor třídy zadávající při inicializaci všechny hodnoty. Pokud jedna z nich přesáhne
     * limit, pak je vyhozena vyjímka.
     * @param Id smallint 0 az 32767
     * @param Ip vo formate xxx.xxx.xxx.xxx alebo xxx.xxx.xxx.xxx.xxx.xxx, kde xxx je cislo od 0 po 255
     * @throws cz.tpj.util.ErrorDatabase
     */
    public Ip (String Id, String Ip) throws ErrorDatabase {
        setId(Id);
        setIp(Ip);
    }


     /**
     * Databáze používá datový typ SMALLINT v rozsahu 0 do 32767. Pokud se překročí interval,
     * pak následuje vyjímka.
     * @param Id je ID ip adresy typu int
     * @throws cz.tpj.util.ErrorDatabase
     */

    public void setId(String Id) throws ErrorDatabase {
        try{
            int i = Integer.parseInt(Id);
            if(i < 0 || i >= 32767){
                throw new ErrorDatabase(ErrorDatabase.INVALID_DATA_FORMAT, "Číslo ID překročilo povolený interval (0; 32767)");
            }
            this.id = String.valueOf(i);
        }catch(NumberFormatException e){
            throw new ErrorDatabase(ErrorDatabase.INVALID_DATA_FORMAT, "Číslo ID nebylo možno rozpoznat.");
        }
    }
    
    /**
     * vrati hodnotu id, ktore reprezentuje id ip adresy v tabulke
     * @return id
     */

    public String getId() {
        return this.id;
    }
    
    /**
     * nastavi hodnotu Ip adresy vo formate xxx.xxx.xxx.xxx alebo xxx.xxx.xxx.xxx.xxx.xxx
     * pricom xxx je cislo od 0 po 255
     * @param Ip
     * @throws cz.tpj.util.ErrorDatabase
     */

    public void setIp(String Ip) throws ErrorDatabase {
        Validation val = new Validation();
        this.ip = val.validatedIp(Ip);
    }
    
    /**
     * vrati hodnotu ip adresy
     * @return ip
     */

    public String getIp() {
        return this.ip;
    }

}
